package com.example.htmltextview.view;

import android.content.Context;
import android.text.Html;
import android.util.AttributeSet;
import android.widget.TextView;
/**
 * 直接设置html字符串的TextView(只支持字符串表现方面的,图片等还是不行的)
 * 基于Html.fromHtml(text)
 * 使用相应的命名空间和属性html可以直接在xml中配置
 * 编辑模式下看不到效果
 * */
public class HtmlTextView extends TextView {
	/**自定义属性的命名空间*/
	public static final String NAME_SPACE = "http://schemas.android.com/apk/res/com.example.htmltextview";
	/**HTML属性名称"html"*/
	public static final String HTML_ATTR_NAME = "html";

	public HtmlTextView(Context context, AttributeSet attrs, int defStyle) {
		super(context, attrs, defStyle);
		getHtmlTextArtt(attrs);
	}

	public HtmlTextView(Context context, AttributeSet attrs) {
		super(context, attrs);
		getHtmlTextArtt(attrs);
	}

	public HtmlTextView(Context context) {
		super(context);
	}

	public void setHtmlText(String text) {
		if (text == null) {
			text = "";
		}
		if (isInEditMode()) { // 开发工具中显示
			setText(text);
		} else {
			setText(Html.fromHtml(text));
		}
	}

	public void setHtmlText(int resId) {
		setHtmlText(getResources().getString(resId));
	}

	/** 获得Html属性的值 */
	public void getHtmlTextArtt(AttributeSet attrs) {
		if (attrs != null) {
			int res = attrs.getAttributeResourceValue(NAME_SPACE, HTML_ATTR_NAME, 0);
			if (res != 0) {
				setHtmlText(res);
			} else {
				String htmlStr = attrs.getAttributeValue(NAME_SPACE, HTML_ATTR_NAME);
				setHtmlText(htmlStr);
			}
		}
	}

}
